/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package control;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
import java.util.TreeSet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import modele.Dep;
import modele.Med;
import modele.Pays;
import modele.Spe;

/**
 *
 * @author abach
 */
public class Control extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    private Pays pays;

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        pays = new Pays();
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String page = null;
        String choix = request.getParameter("choix");

        if (choix == null) { // si choix est nul
            page = "index.jsp";  // affiché l'accueil

        } else if (choix.equals("dep")) { // si le choix(boutton) equivaut à dep, alors lancer la page normale
            String searchdep = request.getParameter("searchdep");  // prendre serach dep est le nommer comme variable searchdep

            if (searchdep == null) {
                Collection<Dep> d = pays.getLesDeps(); // la collection dep qui s'appel d recupere tout les departements.
                request.setAttribute("listedep", d);   // tu mets qq chose pour le jsp. pour ${} j'envoie d comme la collection Dep, et qui du coup s'appel listedep
                page = "med_dep.jsp";  // appel la page med_dep.jsp

            } else {  // envoyer la page, si le boutton search dep est utilisé
                Collection<Med> lm = pays.getLeDep(searchdep).getLesMeds(); // la collection dep qui s'appel lm, recupere tout les medecin pour un departements.
                request.setAttribute("searchdep", lm);  // tu mets qq chose pour le jsp. pour ${}
                page = "choixdep.jsp";
            }
        } else if (choix.equals("nom")) {
            String searchnom = request.getParameter("searchnom");
            Collection<Med> med = new TreeSet<Med>(); //la collection Med -> med sera un treeset

            if (searchnom == null) {

                String lettrenom = request.getParameter("lettrenom");
                Collection<Dep> d = pays.getLesDeps();

                for (Dep leDep : d) {  // Dep est le type: classe, Desdep est le nom de ma lign/departement. d est la collection parcouru.
                    for (Med leMed : leDep.getLesMeds()) {  // le medecin dans les medecin par departement
                        if (lettrenom != null) {
                            if (leMed.getNom().startsWith(lettrenom)) {
                                med.add(leMed);// pour les medecin  qui commence par la lettre, on va les rajouter dans 
                                // une collection qui sera par la suite affiché
                            }
                        }
                    }
                }
            }
            request.setAttribute("listenom", med);
            page = "med_nom.jsp";
        } else if (choix.equals("spec") ) {
            String searchspe = request.getParameter("searchspe");  // prendre serach dep est le nommer comme variable searchdep
             
             
            if (searchspe == null) {
                Collection<Spe> s = pays.getLesSpes(); // la collection spe qui s'appel s recupere tout les spec.
                request.setAttribute("listespe", s);   // tu mets qq chose pour le jsp. pour ${} j'envoie d comme la collection Dep, et qui du coup s'appel listedep
                page = "spec_accueil.jsp";  // appel la page med_dep.jsp

            } else {            
                 String s = pays.getLaSpe(searchspe).getSpec();
                  request.setAttribute("s", s); 
                Collection<Med> sp = pays.getLaSpe(searchspe).getLesMeds(); 
               request.setAttribute("searchspe", sp);  // tu mets qq chose pour le jsp. pour ${}
                page = "spec_index.jsp";
            }

        }


        request.getRequestDispatcher(page).forward(request, response); //pour avoir la vue




    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
